// Copyright Epic Games, Inc. All Rights Reserved.

#include "LyraPerformanceSettings.h" // 包含头文件

#include "Engine/PlatformSettingsManager.h" // 包含平台设置管理器
#include "Misc/EnumRange.h" // 包含枚举范围工具
#include "Performance/LyraPerformanceStatTypes.h" // 包含Lyra性能统计类型

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraPerformanceSettings) // 包含由UHT生成的代码

//////////////////////////////////////////////////////////////////////

/**
 * ULyraPlatformSpecificRenderingSettings 类的构造函数。
 * 初始化移动设备帧率限制列表。
 */
ULyraPlatformSpecificRenderingSettings::ULyraPlatformSpecificRenderingSettings()
{
	MobileFrameRateLimits.Append({ 20, 30, 45, 60, 90, 120 }); // 向移动设备帧率限制列表追加常见的移动设备帧率值
}

/**
 * 获取当前平台的 ULyraPlatformSpecificRenderingSettings 单例对象。
 * @return 指向当前平台的 ULyraPlatformSpecificRenderingSettings 对象的常量指针。
 */
const ULyraPlatformSpecificRenderingSettings* ULyraPlatformSpecificRenderingSettings::Get()
{
	ULyraPlatformSpecificRenderingSettings* Result = UPlatformSettingsManager::Get().GetSettingsForPlatform<ThisClass>(); // 通过平台设置管理器获取当前平台的设置
	check(Result); // 确保结果有效
	return Result; // 返回结果
}

//////////////////////////////////////////////////////////////////////

/**
 * ULyraPerformanceSettings 类的构造函数。
 * 初始化每个平台的设置、分类名称、桌面帧率限制列表，并默认允许所有统计信息。
 */
ULyraPerformanceSettings::ULyraPerformanceSettings()
{
	PerPlatformSettings.Initialize(ULyraPlatformSpecificRenderingSettings::StaticClass()); // 初始化每个平台的设置，关联到 ULyraPlatformSpecificRenderingSettings 类

	CategoryName = TEXT("Game"); // 设置分类名称为 "Game"

	DesktopFrameRateLimits.Append({ 30, 60, 120, 144, 160, 165, 180, 200, 240, 360 }); // 向桌面帧率限制列表追加常见的桌面帧率值

	// 默认允许所有统计信息
	FLyraPerformanceStatGroup& StatGroup = UserFacingPerformanceStats.AddDefaulted_GetRef(); // 添加一个新的默认性能统计组并获取其引用
	for (ELyraDisplayablePerformanceStat PerfStat : TEnumRange<ELyraDisplayablePerformanceStat>()) // 遍历所有可显示的性能统计指标
	{
		StatGroup.AllowedStats.Add(PerfStat); // 将每个性能统计指标添加到允许的集合中
	}
}